#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
// 单链表
typedef int SListDataType;
typedef struct SListNode
{
	SListDataType data;
	struct SListNode* next;
}SLK;

// 接口
void SListPrint(SLK* phead); // 输出数据域
void SListPushBack(SLK** pphead, SListDataType x);// 尾插
void SListPushFront(SLK** pphead, SListDataType x); // 前推
SLK* CreateNode(SListDataType x); // 创建节点
void SListPopBack(SLK** pphead);  // 尾删
void SListPopFront(SLK** pphead); // 头删

// 
SLK* SListFind(SLK* phead, SListDataType x);  // 查找
void SListChange(SLK* pos, SListDataType x);  // 给定位置更改
void SListInset(SLK** phead, SLK* pos, SListDataType x); // 任意位置之前插入
void SListInsetAfter(SLK* phead, SLK* pos, SListDataType x); // 任意节点位置之后插入
void SListErase(SLK** pphead, SLK* pos); // 任意之前位置删除
void SListEraseAfter(SLK* pos); // 任意pos之后位置删除
void SListDestory(SLK** pphead);   // 释放链表
